// 引入Vue实例
import Vue from 'vue'
// 引入Vuex状态管理
import store from '@/store/index.js';
//页面集合
import pages from '@/static/js/pages.js';
import qqmapsdk from '@/utils/location.js';
// 定义一个handle类
class handle {
	/*** 跳转页面
	 *@param {object} param 跳转传参 
	 *@param {function} callback  需要授权回调
	 *@param {string} type  跳转类型  
	 *@return void 
	 ***/
	toUrl(callback = {}, param = {}, type = 'navigateTo') {
		// console.log(11111111)
		


		let url = this.getVilit();
		let params = ''
		
		// 检测是否获取详细地址信息
		//this.getJingWeiDu();
		// if (!uni.getStorageSync('loginlongitude')) {
		// 	console.log('请先获取地理位置')
		// 	this.getJingWeiDu();
		// 	return
		// }
		//检测页面是否需要登陆状态
		// console.log(url)
		// console.log(this.checkLoginStatus(url))
		if (this.checkLoginStatus(url)) {
			//console.log(uni.getStorage('loginStatus'))
			//console.log(store.getters.loginStatus)
			//this.getJingWeiDu();
				
			// if (uni.getStorageSync('loginlongitude')) {
				
			// 	this.getJingWeiDu();
			// 	return
			// }
			if (!store.getters.loginStatus) {
				//弹出授权框
				callback('check')
				return
			}
		}

		if (url === 'local') {
			type = 'local'
		}
		if (url === 'close') {
			type = 'close'
		}

		if (JSON.stringify(param) !== '{}') {
			params = this.concatParams(param)
		}
		// return
		console.log(url)
		console.log('销毁页面' + type)
		switch (type) {
			case 'navigateTo':
				// setTimeout(function() {
				// 	uni.navigateTo({
						
				// 		url: url + params,
				// 		success() {
				// 			console.log(type)

				// 		}
				// 	})
				// }, 200)
				uni.navigateTo({
					url: url + params,
					success() {
						console.log(type)
				
					}
				})

				break;
			case 'reLaunch':

				uni.reLaunch({
					url: url + params
				})
				break;
			case 'redirectTo':
				uni.redirectTo({
					url: url + params
				})
				break;
			case 'local':
				uni.reLaunch({
					url: '/pages/index/index'
				})
				break;
			case 'close':
				//关闭弹框
				callback('close')
				break;
			default:
				setTimeout(function() {
					uni.navigateTo({
						// url:'/packageA/pages/month_card/month_card',
						url: url + params,
						success() {
							console.log(type)

						}
					})
				}, 200)


		}


	}
	
	/*** 检测目标地址是否需要登陆
	 *@param {string} url 跳转地址   
	 *@return bool
	 * 
	 ***/
	checkLoginStatus(url) {
		try {
			if(url==''||url==null)
			{
				return true;
			}
			if (!pages.hasOwnProperty(url)) {
				return true;
			}
			//console.log(pages[url].loginStatus)	
			return pages[url].loginStatus
		} catch (e) {
			throw (e)
		}

	}
	/*** 设置跳转地址
	 *@param {string} url 跳转地址 
	 *@return void
	 ***/
	setVilit(url) {
		//将请求路径转成数组
		let require_url = url.split('/');
		console.log(url);
		//获取请求路径的最后文件名
		let last_file_name = require_url[require_url.length-1];
		let urlArr = [];
		//循环搜索符合跳转的绝对路径
		for(var key in pages){
			if(key.indexOf(url)>-1){
				//将搜索到的类似路径转成数组
				var key_url = key.split('/');
				//获取类似请求路径的最后文件名
				var last_key_file_name = key_url[key_url.length-1];
				//比较多个类似路径中最后的文件名是否一致
				if(last_file_name==last_key_file_name){
					
					urlArr.push(key) 
				} 
			}
		} 
		console.log('sets****',last_file_name)
		//判断搜索结果是否出现多个类似跳转路径
		if(urlArr.length>=2){
			throw ('匹配到多个类似跳转路径无法定位要跳转的路径请修改文件名称' + urlArr)
			return ;
		}else if(urlArr.length==1){
			url = urlArr[0];
		}
		console.log('set****',url)
		store.dispatch('setPath', url)
	}

	/*** 获取跳转地址
	 * @return string
	 ***/
	getVilit() {
		return store.getters.path
	}
	/*** 组装传值字符
	 * @param {object} param
	 * @return string
	 ***/
	concatParams(params) {
		let paramsStr = ''
		for (var k in params) {
			paramsStr += k + '=' + params[k] + '&'
		}
		paramsStr = '?' + paramsStr.substr(0, paramsStr.length - 1)
		return paramsStr
	}


}
export default new handle();
